【红外遥控器】基于FPGA的红外遥控verilog附代码及解析

您所在的位置:网站首页 遥控器 蓝牙 红外线怎么用 【红外遥控器】基于FPGA的红外遥控verilog附代码及解析

【红外遥控器】基于FPGA的红外遥控verilog附代码及解析

2024-07-10 09:50:23| 来源: 网络整理| 查看: 265

一、软件版本

 Quartus II 13.1 (64-bit)、Modelsim SE-64 10.4、正点原子FPGA开发板开拓者V2

二、红外遥控简介

红外遥控:红外遥控是一种无线、非接触控制技术。

特点:抗干扰能力强,信息传输可靠,功耗低,成本低,易实现等;由于它不能穿过障碍物去控制被控对象的能力,可以有相同的遥控频率或编码,而不会出现遥控信号“串门”的情况。

红外光波长为760nm到1mm,人眼可见波长为400nm到760nm。

三、红外遥控

        红外遥控器传输协议的编码目前广泛使用的是: NEC协议和Philips RC-5协议。主流的调制方式有两种:PPM(Pulse Position Modulation,脉冲位置调制)、PWM(Pulse Width Modulation,脉冲宽度调制)。

NEC编码协议

        当按下红外遥控器上的按键时,遥控器会发出一帧红外信号,由引导码、地址码、地址反码、数据码、数码反码和结束位组成,传输时低位在前。

 NEC码位定义

        NEC协议采用PPM调制的形式进行编码,数据的每一位(Bit)脉冲长度为560us,由38KHz的载波脉冲(carrier burst)进行调制。逻辑“1”的载波脉冲+载波脉冲间隔时间为2.25ms;逻辑“0”的载波脉冲+载波脉冲间隔时间为1.12ms。

      通过理解这张图我们可以知道数据码是什么,主要是看,数据0和数据1是如何表示的。通过上图可知,数据1是560us的信号,加1.69ms的空闲。数据0是560us的信号,加560us的空闲。由于红外接收头的缘故,接收到信号后输出到 FPGA 的波形刚好与发送的波形相反,最终在波形图上说白了就是,表示1时,是由560us的低电平加1.69ms高电平组合,表示0时,是由560us的低电平和560us的高电平表示,如下图。

数码重复码(连发码)

        当红外遥控器上的按键被一直按下时,红外遥控器只会发送一次完整的信息,其后会每隔110ms发送一次重复码(也叫连发码)。

重复码的数据格式比较简单,同样是由9ms载波脉冲开始,紧接着是2.25ms的空闲信号,随后是560us的载波脉冲。

 红外接收头

        一体化红外接收头,内部集成了红外监测二极管、自动增益控制(AGC)、带通滤波器(Band Pass)、解调器(Demodulator)等电路。

红外接收解码

        

 

完整的传输过程

引导码:表示数据传输的开始。

数据码:分别为地址码,地址反码,数据码,数据反码。传输红外遥控发送的数据,一帧数据共有32bit,4个字节。先发送低位。

停止码:标志着数据传输的完成。(560ms)

重复码:当一直按下某个按键的时候,并不会再次发送数据,而且通过重复码标志按键一直处于按下的状态。如果一直按下的话,约110ms,发送一次重复码。

重复码

四、系统框图

状态转移图

        首先状态机处于空闲状态st_idle,remote_in表示红外信号,当我们检测到remote_in为低电平的时候表示可能收到红外信号,此时由空闲状态转移到st_start_low_ms这一状态,在这一状态我们需要判断低电平持续时间是否为9ms,若为9ms则进入下一状态,判断是完整的数据还是重复码,time_done表示计算结束,judge_flag表示是否为数据或重复码,它是通过计时高电平持续时间判断的,如果为4.5ms就是数据,此时我们进入接收数据状态,当检测到上升沿(pos_remote)data_cnt==32即数据收到了32位,此时完成接收转移到初始状态。

五、RTL代码 1.首先定义各个信号

        输入的由系统时钟、复位、红外信号,输出的repeat_en重复码标志信号,数据有效信号data_en,及红外控制码。

module remote_rcv( input sys_clk , //系统时钟 input sys_rst_n , //系统复位信号,低电平有效 input remote_in , //红外接收信号 output reg repeat_en , //重复码有效信号 output reg data_en , //数据有效信号 output reg [7:0] data //红外控制码 ); 2.定义状态机

        一般用读热码表示每一个状态

//parameter define parameter st_idle = 5'b0_0001; //空闲状态 parameter st_start_low_9ms = 5'b0_0010; //监测同步码低电平 parameter st_start_judge = 5'b0_0100; //判断重复码和同步码高电平(空闲信号) parameter st_rec_data = 5'b0_1000; //接收数据 parameter st_repeat_code = 5'b1_0000; //重复码 3.其它定义 //reg define reg [4:0] cur_state ; reg [4:0] next_state ; reg [11:0] div_cnt ; //分频计数器 reg div_clk ; //分频时钟 reg remote_in_d0 ; //对输入的红外信号延时打拍 reg remote_in_d1 ; reg [7:0] time_cnt ; //对红外的各个状态进行计数 reg time_cnt_clr ; //计数器清零信号 reg time_done ; //计时完成信号 reg error_en ; //错误信号 reg judge_flag ; //检测出的标志信号 0:同步码高电平(空闲信号) 1:重复码 reg [15:0] data_temp ; //暂存收到的控制码和控制反码 reg [5:0] data_cnt ; //对接收的数据进行计数 //wire define wire pos_remote_in ; //输入红外信号的上升沿 wire neg_remote_in ; //输入红外信号的下降沿 4.通过打两拍抓取红外信号上升和下降沿 assign pos_remote_in = (~remote_in_d1) & remote_in_d0; assign neg_remote_in = remote_in_d1 & (~remote_in_d0); //对输入的remote_in信号延时打拍 always @(posedge div_clk or negedge sys_rst_n) begin if(!sys_rst_n) begin remote_in_d0


【本文地址】

公司简介

联系我们

今日新闻


点击排行

实验室常用的仪器、试剂和
说到实验室常用到的东西,主要就分为仪器、试剂和耗
不用再找了,全球10大实验
01、赛默飞世尔科技(热电)Thermo Fisher Scientif
三代水柜的量产巅峰T-72坦
作者:寞寒最近,西边闹腾挺大,本来小寞以为忙完这
通风柜跟实验室通风系统有
说到通风柜跟实验室通风,不少人都纠结二者到底是不
集消毒杀菌、烘干收纳为一
厨房是家里细菌较多的地方,潮湿的环境、没有完全密
实验室设备之全钢实验台如
全钢实验台是实验室家具中较为重要的家具之一,很多

推荐新闻


图片新闻

实验室药品柜的特性有哪些
实验室药品柜是实验室家具的重要组成部分之一,主要
小学科学实验中有哪些教学
计算机 计算器 一般 打孔器 打气筒 仪器车 显微镜
实验室各种仪器原理动图讲
1.紫外分光光谱UV分析原理:吸收紫外光能量,引起分
高中化学常见仪器及实验装
1、可加热仪器:2、计量仪器:(1)仪器A的名称:量
微生物操作主要设备和器具
今天盘点一下微生物操作主要设备和器具,别嫌我啰嗦
浅谈通风柜使用基本常识
 众所周知,通风柜功能中最主要的就是排气功能。在

专题文章

    CopyRight 2018-2019 实验室设备网 版权所有 win10的实时保护怎么永久关闭